<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/8/27
 * Time: 15:39
 */
namespace  Shop;

//判断是否有常量
if(!defined('SHOP')){
    header("Location:../index.php");
    exit;
}

//核心控制器,用来存放个个控制器的公共方法,给所有控制器继承
class Controller{
    //保存视图对象
    public $view;

    public $pdo;

    public function __construct()
    {
        session_start(); //开启session

        //初始化视图
        $this->view=new View();
        //初始化模型
        $this->pdo=new Mypdo();
    }




    //验证码
    //$num 位数
    public function yzm($num){
        //准备画布
        $img=imagecreatetruecolor(150,100);
        $bg=imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
        imagefill($img,0,0,$bg);

        //内容随机
        $list1=range(0,9);
        $list2=range('a','z');
        $list=array_merge($list1,$list2);

        shuffle($list);
        $arr=array_rand($list,$num); //得到key

        $str=array(); //最终结果
        foreach ($arr as $v){
            $str[]=$list[$v];
        }

        //生成干扰点
        for ($i=0;$i<=10;$i++){
            $dot=imagecolorallocate($img,mt_rand(100,150),mt_rand(100,150),mt_rand(100,150));

            imagestring($img,mt_rand(1,6),mt_rand(0,150),mt_rand(0,50),'**',$dot);
        }

        $yzm='';
        //写入
        for ($i=0;$i<count($str);$i++){
            $strbg=imagecolorallocate($img,mt_rand(50,100),mt_rand(50,100),mt_rand(50,100));

            //写入中文的方法写入内容
            imagettftext($img,20,45,20+$i*20,mt_rand(40,80),$strbg,SHOP_PUBLIC.'simsun.ttc',$str[$i]);

           $yzm.=$str[$i];
        }
        //保存内容到session
        $_SESSION[SHOP]['yzm']=$yzm;

        header("Content-type:image/png");
        imagepng($img);

    }

    //定义跳转方法
    //$msg  :提示信息
    //$c :跳转的控制器
    //$f : 跳转的方法
//    $time : 等待几秒
    public function success($msg,$c='',$f=SHOP_F,$time=3){
        if(empty($c)){
            $c=str_replace('Controller','',SHOP_C);
        }
        $url=SHOP_PUBLIC.'msg.html';
        if(SHOP=='Admin'){
            $loca="/admin.php?C=$c&F=$f";
        }else{
            $loca="/index.php?C=$c&F=$f";
        }

        //引入跳转页面
        include $url;
        exit;
    }

    //快速跳转方法
    public function loca($c='',$f=SHOP_F){
        if(SHOP=='Admin'){
            $loca="/admin.php?C=$c&F=$f";
        }else{
            $loca="/index.php?C=$c&F=$f";
        }
        header("Location:$loca");
    }

    //图片上传
    //$file : 图片数据 , $path :保存地址
    public function imgFile($file,$path){
        if($file['error']==0){
            //得到后缀
            $hz=strchr($file['name'],'.');
            $pathName=$path.time().rand().$hz; //图片保存地址
            if(!is_dir(SHOP_DIR.$path)){
                mkdir(SHOP_DIR.$path);
            }
            if(move_uploaded_file($file['tmp_name'],SHOP_DIR.$pathName)){
                    return $pathName;
            }else{
                return false;
            }
        }else{
            return false;
        }
    }

    //返回json格式的数据
    public function retuAjax($arr){
        echo json_encode($arr);exit;
    }


    //无限极排序方法
    public function wxjSort($arr,$pid=0){
        //定义静态变量保存结果
        static $list=array();

        foreach ($arr as $k=>$v){
            if($v['pid']==$pid){
                $list[]=$v;

                unset($arr[$k]);

                $this->wxjSort($arr,$v['id']);
            }
        }
        return $list;
    }


    /** phpjoin1
     * 邮件发送函数
     * @param  string $to      邮件接收者
     * @param  string $title    标题
     * @param  string $content 邮件内容
     * @return 无
     */
    function sendMail($to,$title , $content){
        //查询系统配置
        $arr=$this->pdo->pdo_sel("select * from s_set");

        $from=$arr['wtitle'];

        //引入邮件类
        require '/Extend/PHPMailer/class.phpmailer.php';

        $mail = new \PHPMailer();

        /*服务器相关信息*/
        $mail->IsSMTP();    //设置使用SMTP服务器发送
        $mail->SMTPAuth   = true;     //开启SMTP认证
        // $mail->Host       = 'smtp.sina.com';    //设置 SMTP 服务器,自己注册邮箱服务器地址
        // 需要注意的是，并不是所有的邮件服务器商都提供免费的SMTP服务
        $mail->Host       = $arr['smtp_server'];    //设置 SMTP 服务器,自己注册邮箱服务器地址

        //需要自己手工的配置
        $mail->Username   = $arr['smtp_user'];  	//发信人的邮箱用户名
        $mail->Password   = $arr['smtp_pass'];  //发信人的邮箱授权码

        /*内容信息*/
        $mail->IsHTML(true); 	//指定邮件内容格式为：html
        $mail->CharSet    ="UTF-8";	//编码
        // $mail->From       = 'gogery@sina.com';	 //发件人完整的邮箱名称

        // 可以自己手工的配置
        $mail->From       = $arr['smtp_user'];	 //【注意】发件人完整的邮箱名称
        $mail->FromName   = $from;	 //发信人署名
        $mail->Subject    = $title;  	 //信的标题
        $mail->MsgHTML( $content );  	//发信主体内容
        // $mail->AddAttachment("./img/linux.png"); //附件

        //发送邮件 添加收件人地址
        $mail->AddAddress( $to );  //收件人地址

        //使用send函数进行发送
        if( $mail->Send() ) {
          return 'ok';
        } else {
            //如果发送失败，则返回错误提示
           return  $mail->ErrorInfo;
        }

    }
}